package cn.csc.module.product.dal.dataobject.category;

import cn.csc.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

import java.math.BigInteger;
import java.util.List;

/**
 * 分类信息 DO
 * 类目：是指将商品按照其属性、用途、功能等特点进行分类的一种方式。
 * @author liuchuang
 */
@TableName("category")
@KeySequence("category_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CategoryDO extends BaseDO {

    /**
     * 分类id
     */
    @TableId
    private BigInteger id;
    /**
     * 店铺id
     */
    private BigInteger shopId;
    /**
     * 父ID
     */
    private BigInteger parentId;
    /**
     * 分类名称
     */
    private String name;
    /**
     * 子类目的数量
     */
    private Integer itemNum;
    /**
     * 分类描述
     */
    private String descInfo;
    /**
     * 分类地址{parent_id}-{child_id},...
     */
    private String path;
    /**
     * 状态 1:enable, 0:disable, -1:deleted
     */
    private Integer status;
    /**
     * 分类图标
     */
    private String icon;
    /**
     * 分类的显示图片
     */
    private String imgUrl;

    /**
     * banner的显示图片
     */
    private String bannerUrl;
    /**
     * 分类层级 从0开始
     */
    private Integer level;
    /**
     * 排序
     */
    private Integer seq;

    /**
     * 精钢区
     */
    private Integer markLabel;

    /**
     * 好货速递
     */
    private Integer typeLabel;

    /**
     * 商品数量
     */
    private Integer productNum;
    /**
     * 佣金比列
     */
    private Integer commissionRate;

    /**
     * 上级分类名称
     */
    @TableField(exist = false)
    private List<String> pathNames;

    /**
     * 子分类列表
     */
    @TableField(exist = false)
    private List<CategoryDO> categories;

}
